package cn.fjssj.demo02.service;

import cn.fjssj.demo02.base.BaseImportExcelVO;
import cn.fjssj.demo02.domain.PandaEntity;
import cn.fjssj.demo02.model.dto.PandaQueryDTO;
import cn.fjssj.demo02.model.dto.PandaStatisticsDTO;
import cn.fjssj.demo02.model.excel.PandaReadModel;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface PandaService extends IService<PandaEntity> {
    /**
     * 基于excel文件导入熊猫数据并落库存储
     * @param file
     */
    void importExcelV1(MultipartFile file);

    /**
     * 批量保存导入的excel数据
     * @param excelData
     */
    void batchSaveExcelData(List<PandaReadModel> excelData);

    /**
     * 根据搜索条件导出excel数据
     * @param queryDTO
     * @param response
     */
    void exportExcelByCondition(PandaQueryDTO queryDTO, HttpServletResponse response);

    /*
	* 导入excel数据并校验数据，通过则落库，否则返回校验出错的excel文件
	* */
	BaseImportExcelVO<String> importExcelV2(MultipartFile file);

    /*
	* 导出熊猫统计数据
	* */
	void exportStatisticsData(PandaStatisticsDTO statisticsDTO, HttpServletResponse response);

    /*
	* 导出多行头的excel文件
	* */
	void exportMultiLineHeadExcel(HttpServletResponse response);

    /**
     * 填充excel文件(通过对象)
     * @param panda
     * @param response
     */
    void fillExcelV1(PandaEntity panda, HttpServletResponse response);

    /**
     * 填充excel文件(通过map)
     * @param response
     */
    void fillExcelV2(HttpServletResponse response);

    /**
     * 填充多条excel文件
     * @param num
     * @param name
     * @param response
     */
    void fillExcelV3(Integer num, String name, HttpServletResponse response);

    /**
     * 分批填充多条excel文件
     * @param num
     * @param name
     * @param response
     */
    void fillExcelV4(Integer num, String name, HttpServletResponse response);

    /**
     * 混合式填充场景
     * @param num
     * @param name
     * @param response
     */
    void mixedFill(Integer num, String name, HttpServletResponse response);

    /**
     * 列表横向填充场景
     * @param num
     * @param name
     * @param response
     */
    void transverseListFill(Integer num, String name, HttpServletResponse response);

    /**
     * 多列表数据填充场景
     * @param num
     * @param name
     * @param response
     */
    void manyListFill(Integer num, String name, HttpServletResponse response);

    /*
	* 导出熊猫统计数据（复杂报表）
	* */
    void exportPandaStatisticsData(HttpServletResponse response);

    /**
     * 百万级导出优化实战
     * @return
     */
    Long export1mPandaExcelV2();
}
